1. Field of the Invention
The present invention relates to a data processing apparatus and method for performing in parallel a data processing operation on data elements.
2. Description of the Prior Art
When it is necessary to perform a particular data processing operation on a number of separate data elements, one known approach for accelerating the performance of such an operation is to employ a SIMD (Single Instruction Multiple Data) approach. In accordance with the SIMD approach, multiple of the data elements are placed side-by-side within a register, and then the operation is performed in parallel on those data elements.
Whilst the above approach works well for certain types of data processing operations, and allows a significant performance improvement to be realised, there are certain data processing operations where it is impractical to arrange the required data elements in such a way that the above SIMD approach can be used. For example, if a data processing operation required four input data elements, then the prior art SIMD approach would involve placing one set of values for those four input data elements within corresponding locations of four source registers, and to then pack into the other locations of those source registers further sets of values for those four input data elements, so that the data processing operation can be performed in parallel on those packed data elements. However, in some situations it may not be possible to perform the required data processing operation with the data packed in that manner, or alternatively it may take such a significant reordering of the data that the potential benefit of employing the SIMD approach would be negated by the extra time taken to rearrange the data in the required manner.
Accordingly, it would be desirable to provide a more flexible approach for allowing SAID processing to be performed, which would increase the number of data processing operations that could potentially take advantage of the SIMD approach.